/*
 * @Author: zhangqf
 * @Date: 2018-11-26 14:18:14 
 * @Last Modified by: Scherger
 * @Last Modified time: 2018-12-21 16:40:15
 * 
 * 这是h5 app 界面跳转的工具方法
 * 实现界面的跳转， 作为原声框架的接口。
 */

import utilsFun from '../utils.js'

var isNative = utilsFun.chackNative();

/** 当前页面内跳转
 * @param  {Object} router 路由对象  因为方法内没有router,所以调用的时候需要传入 this.$router 
 * @param  {string} object 跳转参数
 * @Example
 * object对象参数 {
 *  name: 路由命名
 *  path: 路径 ，若设置了path params会被忽略,可用query
 *  params：对象包裹参数 {userId:123,aa:456} // xxx/123
 *  query:带查询参数 {plan:private} // xxx?plan=private
 *  }
 */
function navigateTo(router, obj) {

  router.push(obj);

}

/**保留当前页面，打开新页面；相当于新窗口打开
 * @param  {Object} router 路由对象  因为方法内没有router,所以调用的时候需要传入 this.$router 
 * @param  {string} object 跳转参数
 * @Example
 * object对象参数 {
 *  name: 路由命名
 *  path: 路径 ，若设置了path params会被忽略,可用query
 *  params：对象包裹参数 {userId:123,aa:456} // xxx/123
 *  query:带查询参数 {plan:private} // xxx?plan=private
 *  isTransWindows : 是否透明頭部
 *  }
 */
function openTo(obj) {

  if (!isNative && obj.router) {
    //兼容没有原生支持
    let path = obj.path.split("#/app/")[1]
    obj.path = path;
    obj.router.push(obj);
  } else {

    let str = {}

    if (obj.params) {
      str['params'] = obj.params
    } else {
      //兼容
      str['params'] = obj.query
    }
    str['url'] = obj.path

    if (obj.isTransWindows) {
      native.openWindowTrans(JSON.stringify(str));
      //native.openWindow(JSON.stringify(str));
    } else {
      native.openWindow(JSON.stringify(str));
    }


  }
}

/**
 * 关闭当前窗口
 */
function closeW(closeData) {


  if (closeData) {

    native.closeWindow(JSON.stringify(closeData));

  } else {
    native.closeWindow('');
  }

}


/**
 * 当前窗口返回
 * @param delta 返回的页面数，如果数量大于当前打开的页面数，则返回首页
 */
function navigateBack(object) {
  // if (!isNative) {
  history.go(-1)
  // }
}

/**
 * 关闭当前界面，打开新界面
 * @param url
 */
function redirect(router, object) {
  if (isNative) {
    //native，打开新窗口

  } else {
    //非native
    navigateTo(router, object)
  }
}

/**
 * 关闭所有打开的界面，跳转应用内的某一个界面
 * @param url
 */
function reLaunch(object) {}

export default {
  navigateTo,
  navigateBack,
  redirect,
  openTo,
  closeW
}
